// Copyright 2018 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the “License”);
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// <https://apache.org/licenses/LICENSE-2.0>.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an “AS IS” BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// This file was generated by scripts/generate-benchmark.py, do not modify!

const dataBig = [{
  a: '0xB9B45B0D9A646B5A178E392B4860C7E071D729B8',
  b: '-0xF4C2DA73CB22B4AC6205E06C8DBA2CDA69A744F1D8BF1FD1EC4',
  r: '-0xF4C2DA73CB171966B12C3A25D818B3F6D6F2BEE55AB8025F50C',
}, {
  a: '-0xFE04EA2F063E09016D557CFDA79EC71601CCCA6CF60E0D07D974666B225',
  b: '-0x88782EBA5720A1C1FBD9101745AB3C33590DD87CE33A5DC9ECE7',
  r: '-0xFE04EA378DC0F4A6DF5F991D652FC88A5C808DA286EB94D60D1A4309F0C',
}, {
  a: '-0x18BEEC3B9CF2F00192325A2080AC65CA0F91E',
  b: '-0x8FF0B510C39736F4C92E4546E6DAA885C01287F0156CACFA4B49D317E',
  r: '-0x8FF0B510C39736F4C92E5E05D3164578B0141A226F8D2DA6B113E2A9C',
}, {
  a: '-0x7B7FE054462BFAF05B753EB89576F348D4E7155631AD36A05E61A517200B0CD341',
  b: '0x88E2510FED95D6B3F67A63606A679F976E6',
  r: '-0x7B7FE054462BFAF05B753EB89576F34046C20457584FCB60F6BB6F107991135C5B',
}, {
  a: '0xA9AB799E33ABDEB5DD3F5AA110D506F49874AE4344451C4C148E1CFC84B9C0E',
  b: '-0x256EA6597801790CB658D3A5F184142302322792EB5C',
  r: '0xA9AB799E33ABDEB5DD3D03B6AB3D86DD07A948B609E6040AD25DF9DA0B8B0B2',
}, {
  a: '-0xEF00C39EEDF83B06CEC2DB5239201FBF5C30CCDC3183877001D6FCF32FA33',
  b: '0xFBDC33DA6A12823A54FD19B8AEB9BF9D0BC740',
  r: '-0xEF00C39EEDF83B06CEC2DB427B5CE218BB08A936E1B1EBE5163B0322732F3',
}, {
  a: '-0x1883BCE67064EF2ABE0E41843A7221C3539440D46B7AFEB89CC6B1DD45BDE905E81A9',
  b: '0x270578B9607D4BC0D23451D7D6490483AB3999903A2FB5A05220',
  r: '-0x1883BCE67064EF2ABB9DE9F8A46A4D074670FBB6EE166E7062131844421AEDABE2F89',
}, {
  a: '0x41CEB6929B50C62C4E4E8BA44B51FD86D6C5A5B0A14A9CCC',
  b: '-0xB19335AE3DA63618AEF9CE11C5F4BB71801',
  r: '0x41CEB6929B50BB131AF3A7C9E7F0729739E48951559384CB',
}, {
  a: '-0xF4697619535676F50F15410AC00F33D993391E',
  b: '-0xF9FEDB7C6C75F3F2DC1C23DE378160F1FE34758E0CDF2CC1C',
  r: '-0xF9FEDB7C6C853A8A3DB15945A6D252460EE076814A786053A',
}, {
  a: '-0xCFC962C9DA34DF74D9C7D59082AD0FD65E2DD904DAEB83632',
  b: '-0xD091EEDB6A4936702E402E38624DEE9B4464BB',
  r: '-0xCFC962C9DA41E893C77E7A23E9AFF3D941B3FDE3C49FC9AED',
}, {
  a: '0x893D3ABE77B361AB99CB2A073F3C0FDDE469B7E82B040',
  b: '-0x1AD4716480ADAA7ED098219B607E6A47168C',
  r: '0x893D3ABE76061A9551C04F5F52328DC42E61D143B99B4',
}, {
  a: '-0xB14212939C44B7019E64DF5780C412A9171D',
  b: '0x3934C4B1C361E1D9BEF1297C2A5FB74514540B385C3E1136',
  r: '0x3934C4B1C3613097AC5D8D37735E18E034FC8A744994FA19',
}, {
  a: '0x9960EBFC66FDE2141F7D3BB1662B6393FE921AF9851C672BBDCD9C9',
  b: '0x8D480206F8F5980685E6E6ED12880CC07659AE6F2E6C350EA7B0134',
  r: '0x126A8EE035FF37A1AA564229E78B3705474EBC968B3889C3A657DAFD',
}, {
  a: '0x3783B08E4DBE681D261C443816B7D42605974A8F9',
  b: '-0xDFE0366FCBCD136CACC844D418DFF7760AC3DE2E705C6930E5BB03BF32DA5',
  r: '-0xDFE0366FCBCD136CACC80D506851A9B7A2A6B8122C2452791194FE27E84AC',
}, {
  a: '-0x8ECDC91C0BE179929ABB3A541172AAD4BAB7F7C072B7DDC8E93448E4EB03952339D5A5',
  b: '0x35D856C946CAFA18771E025DC4B79F21C11A011F2BA5D05BA41',
  r: '-0x8ECDC91C0BE179929AB7DCCEA4DE3E25193085E04CDB924EF7183744D910DAC6341B64',
}, {
  a: '-0xE0E66B8AE948D0C32A6B3D8EBF74E62FB02423',
  b: '-0xF39E475209A3F135C7D97605C48DEDB41FDFEA5E8947462A9',
  r: '-0xF39E475209B1FF9C80880A92D0C09467F8CBE1ACEC42486CC',
}, {
  a: '0xCD28BB6BCD48CCD1C83727BD7104331175CBCC02A1973D281399CA48B68F2AE722C00B',
  b: '0xD6AF11A8C4080FB1B494114A9A4BD18AAA782AAF69B0BA97611F3C3FBB04331',
  r: '0xCD28BB793839E75E08B822D8BA4547BB1A88E4AD4919E81EAEA573BEC882EEE2D3033C',
}, {
  a: '0xAEBF8A6347797D66970ADB5AF799FA8F88E8D47D780BEACAEA6243749E5B',
  b: '0x755A4092E5BCB632317054B48C786613EFB81314378AA3919B261E05654',
  r: '0xB6152E6C75D548C9BA21E0A6406180F0C7E455AEBB8495040414A554F4AF',
}, {
  a: '-0x9970396816574F36D06B593DCB0474706C15EC9D9',
  b: '-0x7D83AADA76D744607FFE12AC52A307C992E8BDCDEEDFCA809',
  r: '-0x7D83AADB10477DC8965561E3230E61075DED323E5AF5B71E2',
}, {
  a: '0x2388372AC14A747222AFE7808C50AE7EB4FF03E811B00B34E9DC432E',
  b: '0x545A667BFCD846393E32D00E680E4F71A56100A7E7249FBD32DBDCAFDD',
  r: '0x547DEEB3279990ADB0557FF5E89AA0202415FFABCF364FC867C5B8F30B',
}, {
  a: '0x4E309DBD2AB87631D4FDD33E8757964D03B973A9345F9',
  b: '-0x7039F9A61A62F51ACD2E9FB9E936A2A673AEC349C4F6486782C7477A24E75B90093C56',
  r: '-0x7039F9A61A62F51ACD2E9FB9E45398CAA1033BE6A7A66B339A51CE1554ABC45575F65D',
}, {
  a: '0xA2E598D6727432549AADFB20A67080525141840B5',
  b: '0x885EDA5ABAD2C154B31FF926165C5A82E9400A',
  r: '0xA2EE1EC4181FDF80AFF92D2038D1E617F970180BF',
}, {
  a: '-0xDCB7D5173223FCBAF8DBA1A3CD9ABC656888BD62CB0BC171A23932FADFDE6F288F',
  b: '-0xB14662F6F50D96F897FF598D1E560BE8E71F26FC59C3D8FFA4349BD6FC28E',
  r: '-0xDCB7E02B98536C0BD24B2B23C3338E4AC9474BD4BD7B870DDFC92D3E299BDEEB1D',
}, {
  a: '-0xB592CF78097829310CF874F6624840391F460BA2F94925',
  b: '-0x361DC3BCF54B9231DE817C3CD13A1819426',
  r: '-0xB592CF78097B8B0D48C7C9AF85662850E3131F447ADD4B',
}, {
  a: '-0x9B9B85E294AF95DC3B81B6BD81558B4C7FAF1C865FA3D3B61D163D136A18',
  b: '0xA8AE4D6A5DB2CEE150D41A337A4D12C47B722DC3E8B9A18CA89CE4E',
  r: '-0x9B9B7B57AFD8F0010E93A1B03FB253A7AE82D4CF3CC7952A82FD72899BCA',
}, {
  a: '0x11FD18ED7C659FF27934C56A37B7738025394CB323995EDC78',
  b: '0xC70A6546647985A43BD020F50BCEC1B8F0A9966E4AE9F',
  r: '0x11FD255E22BA063A118F092739C6C43D1154DBBDBD00438B17',
}, {
  a: '-0xB3A81AC452B50B83F9379DBA893BDA7493120CE3D3F0',
  b: '0x3917309830D72638C60E2D39B6F62DBD525A51CDB',
  r: '-0xB3A489514931FE1195AB3CD7B5A06B11B73CE73EB715',
}, {
  a: '0xA44E63EF64A8A6B104576CE5FBDF658BE873244C6CFD339A51632C5AB1771D03D6CD9',
  b: '0x67BB35472FEEBDE8AE141E147C5918A548EF199D29F99DEBB9A9B417F558225BD1',
  r: '0xA454DFA2B91BA59CE2E24E27DD272B1D72C7B33E06CFD334301EC6F5F2F67285FC8AA',
}, {
  a: '0x119F70120DBA6949E6B0BC97A831517B17C1291A73E36DD5A3',
  b: '0xA24FDD5CFE718353C266802532CD4270D173892869AFA5297DA9E3F49868',
  r: '0xA24FDD5CFE8322C3D4743A8E7CB3F32D691BBA79E4C76652981DC7626E0B',
}, {
  a: '-0x15CA72EE966958A4BB78F44C711A741B02CCB2660BA223B5C',
  b: '-0x4485802A5C478570375F068D23BCAF7802B362831E987FEF792CC4AF4E4',
  r: '-0x4485802A5C5D4FE325F56FE5C878286C4F247CF7399B4CA1DF3866D3040',
}, {
  a: '-0x985336A017AF877DDA7965F9DC4D11726EDC14791468',
  b: '0x57A4D75D8EE53DCC501983593A4DF2262D9AA8D426',
  r: '-0x97FB91C8BA20A2400E294C768312C38048AE79D04042',
}, {
  a: '0xA66E0B90DF41623DB1BB442181A61DAD83D8D7F164FE78C484C9F57367FA9CE32AD',
  b: '0x1B42E7978C8A92F39FEED6F40A2F706DED894CE68C48',
  r: '0xA66E0B90DF41623DB1BB442335D497264C82072B63EBE80527C0FC52408F6B4BEF5',
}, {
  a: '-0xFC08469DCD8CB725C85C442FFC12D660B72F8E4',
  b: '0x612FD49CD5CD1099008B6350B95889F7E73486077A13FB959D299EE8EB3381D',
  r: '0x612FD49CD5CD1099008B634FBD50435A19A7CEE1B1B7B765A116C8883403F39',
}, {
  a: '0x108B9431276FD06F793202D3FD52516AD14711FE7C5A3903A',
  b: '0xDDA6B214589F18315AB80708E1CF3B9089CB15BE7C43F7899B847',
  r: '0xDDA6C29FECD03FA12B27803AE4A338E2DB35E7058E4273E3D4881',
}, {
  a: '0xCD65B79D62D8AEFB30E4572C8FEE4075B408DB41CEF4D36F6956CDEF1E',
  b: '-0xA6034F297388615EE51276AFB862C4CB7462915FE8BD9EFB2FD310A79C6531242A',
  r: '-0xA6034F28A622A9C18239C7B4877E6D9EE47450EA34B4C3B960DE3D38330E63350C',
}, {
  a: '0x148C45E0310953084EFACD0BFDE91E124ECA8',
  b: '0xE2A96D1240397179E757A0198549E46B8CEAC852EF9D5C24B4DBFC360B9FAAABDB',
  r: '0xE2A96D1240397179E757A0198549E5B45148CB6384CDE11461ACBC149D80CF9883',
}, {
  a: '-0x9AA0F98D19188B3C38377A4FFEDB8AEEEB301DC59766037162',
  b: '-0x2828B1C1C2C29E3AE6287B5BDA44AC34524C8F0B1F27539',
  r: '-0x9AA37C183534B7661BE5DCD7B4992F39AE75428E8817F5E69B',
}, {
  a: '0xCE8D1D0BDEF21DB7726104BFA64D4A63C60BB3',
  b: '-0x31BEBD91EA3947436232B3FD140B9F7CB0F5275AFC7333F75B',
  r: '-0x31BEBD91EA3878B64526D50AF6542D1BAC35810DB20F6DEBA8',
}, {
  a: '-0xA45334E369F89828F1FFD67B7B94A2054BC00CECD71F04174225CD9497873B',
  b: '0xD39D73AB22E2ED69B8942C9C94EE73084D001D9EEB3CB8E1426',
  r: '-0xA45334E369EB5E51B74DA84CA4F918C281F6BE05A69A3415683719C9097315',
}, {
  a: '-0xCE49983B272BB7CA7CEF529BD8FD71A3DD804A45B',
  b: '0xD4C99FC2E3DFE4D2D26374E4425CDE6AA5A7FBD50E41398568295',
  r: '0xD4C99FC2E3DF16893A284DB88A92617B530C22D79C9D5C051DE3A',
}, {
  a: '-0x4D4FE0F2D9E6DD5DA6A17D8F7DF7BB9E34F13E3192A23C8206655',
  b: '0xE0E0D2425E05C977BF3CCA81A0D7EDF6BD1679',
  r: '-0x4D4FE0F2D9E6DD4F989459699D9B24224124961785235D1634FDC',
}, {
  a: '-0x5EDE8EDF7F1E42BB4A9211F578D896FBB2935EBC7DC',
  b: '0x5B907D4D232B1CDA8E46231C1B27C4A985A55007A6889C4CCE58BADDC2E7F54FC6D6',
  r: '0x5B907D4D232B1CDA8E46231C1539DBBB8DB36BDBF1DF7B2D76CB316E07BEBF63FEFA',
}, {
  a: '0x99FA8FEBE298D6E733DDEA1FCDE3243D5E19391F592E3F6CDB9C26AEE94D',
  b: '0x2F08A5A013A7F18D468B64070685BCB022EA1961F22A06FE8EA',
  r: '0x99FA8FEBE589614135186938A24BDA7DCE8194EA5B5CE102FABEC71ED237',
}, {
  a: '-0x78FA5ACC0A132B153711DA368EFF8D08CB910A3C877C32F32D83589C889',
  b: '0x98E8A1E145575A6D07E14ED91252BC5B8F6C6CF1EE',
  r: '-0x78FA5ACC0A132B152D8350187AAA1761FB12F54EF657072D748C91CD69B',
}, {
  a: '-0x37A2212E8513C0A403791B81621A771B42BC4',
  b: '-0x5CCB8EF230847092781A656AFE091EE587005CE2AADD6F6A',
  r: '-0x5CCB8EF23087EAB48B02B6A7084956773F167E8A1C919B2E',
}, {
  a: '0x1787215C57013672A7BBE8139D7AC8114DCE',
  b: '0xD18D2B17CA922855685E23CE08533CAB259130FE96DDD308A852FF2FD40CDD226C90B2',
  r: '0xD18D2B17CA922855685E23CE08533CAB25A8B81FF334D43F1AFABB17E7AA57EA7DDE80',
}, {
  a: '0x599BC0E15B2E6AF681A1B85C6C23B2D5B7AAD9A3CAFBD2D50E8E4061F6BD5765F4B55F',
  b: '0xC3C944CC5739727B57689B13C23EAD73E5EBE1A3326722D38E3A81AADBDD8A44F3',
  r: '0x599C84AA9FFAC22FF41D0FC507377514651EBF8FAC9F053C3161CE9C786833437EFA52',
}, {
  a: '-0x21A86DAEEA3C18143BDACC61B059287066C5F13C4E063CEB1962A5A298064B',
  b: '-0x5EC3A2A1E7755C9B3788DC3B6E484FB248ED438919995EB43B8C6298',
  r: '-0x21A86E0DADDEB9FBB1376799393563DEAF15A3853B49C604B2C159DE2468E3',
}, {
  a: '0x515323BC6D5338F9AF8EB85ED4080E23D599E109095D99AFDBC801A71C5DAC6',
  b: '0xE3DE2728B0B2622BDCA7B2B7701E6E80B4DD4399035E1A29624C2',
  r: '0x515323BC6E371720D83F6AC0FFE4B5D68D09FF778A1276F374CB5FC145BFF88',
}, {
  a: '0x59A5968DEBB9EFCAD93AFE9BE3A08300F42B4DDA',
  b: '-0x2EB604C45427A82A19BDB87EAA6C2D3DA7D2',
  r: '0x59A567D7E6F59BA33110E4DE2B21D894C6EDA608',
}, {
  a: '0x80A4736B41B683886AC7E3776DD7BC1A36102AE5E',
  b: '0xC0D49F0B0D23E85FC0212E8ED7A739FA156AC24CE2C90F92F12BACC4',
  r: '0xC0D49F0B0D23E867CA686542F30F7280C1E8F9C3C044D136522E5B22',
}, {
  a: '0x112FFC3B2BD0A3E9D85FC473EF7D5627CB36FBF8C167B604AC82E3B8B',
  b: '0xA94B7995BB0B8D487DF8AC96B54D56705C9D23A06D47401339219DFD12F0',
  r: '0xA94C8C957EBE4A52BC963292FC8C4E45BF19D7102CD3568E996C662B4E7B',
}, {
  a: '-0x69F7DACDA65AF60E59303E8E8C3640CE92C258B54FA792F7BA',
  b: '-0xDECCC4DD148C2AFA176687B6077EE751FD7B15E7F3A7888122E782640E9F864C8D',
  r: '-0xDECCC4DD148C2AFA815E6283ADD9DD6056AB54767FDDC94FB5A9DB195E47194447',
}, {
  a: '0x2D698A38A7CF404758754059270E581DF375B21FA3D',
  b: '0xB8BA3FB860870BBA78D98E232A9569284D8C268BFC2A0651BDB45AD11AC3375F',
  r: '0xB8BA3FB860870BBA78D990F9C338F3A541909C13502F98C2A3363A0875E5319C',
}, {
  a: '-0x43CC4051D5823241FEB9B635B37682A7A96A6AF45E1D458',
  b: '0x112442D80BE493CBB60D3320BC2C5D2231DEE03E7C05345DC74704C5338',
  r: '0x112442D80BE44FFF75BB5D9E89EA5E687BA92CC7F95D8AF35C52A6A7EE0',
}, {
  a: '0xA71DB75643380CA8E46E4F7054C3132D9C8AF978',
  b: '0x9F57C3356306053D7A64C1EFA98C3894CA7AB12766DDE41',
  r: '0x9F57C33FD4E17AA1ADE58C7DF0712F9A16ABE4012F8D7B9',
}, {
  a: '0xCA7768CAF6B015404AE66631593CAF8CED301F5C',
  b: '-0xEE38EA51CD742D18B6E0EFDEEAD61E304508A5E9688E96E01C7094E8F4225D092',
  r: '-0xEE38EA51CD742D18B6E0EFDEDE2EA7A3959DA49563E0307D06DCC9F0254F5B136',
}, {
  a: '-0x52F3769ED2B17E6AD0E547D58EEE92DF51E1891A156A4A346BF28A8D8E',
  b: '0xA953D888D4B845798C71453F83B60687203F1AA51D6F28524EA7C2F9A',
  r: '-0x485E39164565FA13381E338196B33276DFDD976FC39357AF47080E5DF4',
}, {
  a: '0x97B546B8FFE0196EC1C7327722A3F77622CA7CF5FE89FA714486',
  b: '-0x17B90821E15F09AAF9E247F6F03CB94A522F0792',
  r: '0x97B546B8FFE001B5B9A5511818F8FD93DAD38CB9453FA8423CF4',
}, {
  a: '-0x6C057515FEF74FEE8DBD0525C0367232DFB205BDD2AB0BC8C4348EAF52D971',
  b: '-0xA70317BE3C4A01BDC3ADD2CC1E462C6DE0F567548B3983B79D9F8B15EAF92',
  r: '-0x7675A691E2BBF00A69F7E252821AD4F9BDC15C331B5EA4043E0E8760B18903',
}, {
  a: '0xD050F2D35C1B713C9296CFBA9328CF1326D9CE',
  b: '0xD505016DC792B6C4B04CF5AD997607E3EBC8432DDE682802116BFB225F38B',
  r: '0xD505016DC792B6C4B04CF5BA9E853519AD7F56F707D523AB43F8EC54CCD59',
}, {
  a: '-0x7660422075A30FE326CBBF8E07276393481D7',
  b: '-0x66D546B6FCD9FCFBDF4FB1AAA86B50E4E25626C6CB87485442E2DEF47B73D19',
  r: '-0x66D546B6FCD9FCFBDF4FB1AAA8E1B12702CBC9D6AEAE1413D0EA06580EBBEF0',
}, {
  a: '-0x3A46544AF0DE6684559103866CF3BBE90C2B86FD493324D5C4BED485C8105AEF0A8',
  b: '-0x5B5000716D035453CBCABA5C71CB6ECAE592E9ECDF549B1DCECDAB911',
  r: '-0x3A46544AF139B684C6FE06DAC0BF86A3689D526C1418B7BFB19E2920E5DF289A9B9',
}, {
  a: '-0xA2DEA6F93E3912A271BDEA5FE58EC12BF9191D653505668F00A8043583A8A',
  b: '-0xB75F159B7F3DE3AE85D0A22DB5C53804A3588',
  r: '-0xA2DEA6F93E3912A271BDEA609CEDD6C778570113BAD608BCB66D3C3A27012',
}, {
  a: '0x3B2754D0F781CF4C62063156CD9A29C508950B25AD11E',
  b: '0x7DAE5374B7C22A22ED109630B8A6CEB4757186A473062342A75C21376CA7AB83B',
  r: '0x7DAE5374B7C22A22ED10D1580D77C63644BDE8AAA45CF0DCD12129CC77CD58959',
}, {
  a: '0x8D3DB9374C875F4C29DEC2CE2D85D4FE65E431B242205F7FA85AE50',
  b: '-0xAB2CAE9AD9586EB711DE8995AAEEF59E26B1F7097E502',
  r: '0x8D3DB9374BDC329D8F056A5F7673F674D03942BCA3F9AD889EDC94E',
}, {
  a: '0x1B24B31ACD277E575AC6EB95C74BE56BA2FBAAD5205C61EC323DEC4ED52AB4663C88',
  b: '0x48F64653488167AAF1C72B70E7A0741093B3AE64363D0A82FE4AB05AC598073DF6',
  r: '0x1B6DA961206FFFBF05B8B2C1383385DFB38F5E8384929EF6B53C36FF2FF04C6D7A7E',
}, {
  a: '0xF638112F80CDCDF982A99E03A35A3B2C7394F',
  b: '0x1F87DE741F17E36127BB172793C63C75651958CD9C80E36F032DFFD',
  r: '0x1F87DE741F17E36128B14F38C3470A435E9C026BA0243DAA2FA194C',
}, {
  a: '-0xED1E8CA2DBBEBC130A8FB1AA2B7CEDBBD1EA4E0B1E30804B53C81DE8C14F2AF1',
  b: '-0x478F34BBD96DE7C12395613B21DB550970EB7AB',
  r: '-0xED1E8CA2DBBEBC130A8FB1AA2FF5E1078F812C873069D65F05E5D339585DE29C',
}, {
  a: '-0x742D27E20E9EDDD5D551B06E0B25E64D32910BF08D81026D85',
  b: '-0x71814ECA4179BD3DEDDB3E53868B1215CE674777911BF625AE8E4AAA',
  r: '-0x71814F3E6EA19F4C8CB91428D83B8020F44D94AA2227E6B32F90B82F',
}, {
  a: '-0xC038A1AC7E090A911D6F38946884F8F44310ADFEB185BC252C2F2FAA342108606FDC',
  b: '0x1D5DA1934D60AEA29AFF2CE6A03A2AA8580D',
  r: '-0xC038A1AC7E090A911D6F38946884F8F425B30C6B64250D82913002C393E6DDB817CF',
}, {
  a: '0xE4FBDF555DD1985355B5B956D7931DEA722C42B4FD0FE',
  b: '0xCF00696FD21F05E6A39CAB2B4A23597565F88B506BBF',
  r: '0xF1EBE5EC5AF388B1BFEF84098C355381C88BCB6A03CBD',
}, {
  a: '-0x4D21AAC36AD1451F66CF454F65397EC720DB5F36B4707984',
  b: '-0x16CE4FE51AE2F68FD323E5EED4BF53E7F838C13B9',
  r: '-0x4D21AAC4D7B6437114FEAE4C9777DDB46CD09DB637FC8D3D',
}, {
  a: '-0x6AEE0D0D4EDB28581F80FBE9D26C6FC03DD',
  b: '0xA50D54BECCBF70542B78F38B229F18350D50C65',
  r: '0xA50CE9D0BFB221790320D40A26B545C89D90888',
}, {
  a: '-0xEA50F0FF8D11A554ABA841AE26ACC7B83951C',
  b: '-0x4D3A7A71911CDB7BDF0A3AFEBBF5780D2ED001C5829713A06E1D83',
  r: '-0x4D3A7A71911CDB7BEDAF4A0EB4C69262798A85E06501E01BF1B29F',
}, {
  a: '0x4FF83A030FBDBA29B82F8672D269D521A07845FEA942678477665327C',
  b: '-0xC5DEDAB348C94EA6A2F169EDCBB1377CA6078ED64C7BF4AF4',
  r: '0x4FF83A0249DEDF766F6637CC2F786B33D4C70E82033AD8AE2AEA5E788',
}, {
  a: '0x450B0F28C652F9FA4F2DE58C7D8D373589202F34A7A50A9E21E297E8F772DE0ED5CEE4',
  b: '-0x6BF36587724D4A34E0EC4CBF154C477C957246D1967CFCFB958B938A333BE73039DAF6',
  r: '-0x26E8565EABFA503A91BE673297BF10470C52179CEED7F25D73A8FBA13BC90921640C12',
}, {
  a: '-0xFB536E33FBB9E8C57B354144785BDAF37A4773D8F4DD0C277FC16139E6457',
  b: '0x3574A9FB07C178AC1DD57EE44E4C97DA79F99B8BB5A707C3',
  r: '-0xFB536E33FBB9E56E309590C860D1191622592EF42B5F6487E608A5DF75C94',
}, {
  a: '0xD8B24306B79889AE564511894B7AF0350EC82A43BD82BAC03B61D73',
  b: '0x516FB1E4B40BDDB9546157EF7887B493694750A0DBDB6EB1376006FAB7345A60',
  r: '0x516FB1E4C19701E9BFDAE08A5DEC05ABFDFEFFA42CC7F155733832A6BAEA77D3',
}, {
  a: '-0xF3ED73EE6C39637EC11B41325EE387C442DBE4CD7',
  b: '-0xB4231462F7EBD0C835A2E9C7309E199503CB0F727E2A',
  r: '-0xB432533A36D2945E6D8EFB7B43C407CD800F3D30CB01',
}, {
  a: '-0xE857C1DB5F33F61F5E2E940CDE9B0BD6EF1148E3DC12B0D3EA29F67EEAD81A',
  b: '0x489BF45671EEA6FCA94162EA524D7E25289AF2A51DA4D184',
  r: '-0xE857C1DB5F33F5D6C23A3D9AEFF40F2DADAE5E918E948BAB4F375161460696',
}, {
  a: '0xA20E71339838F0C2908A70F41A13CC0D6BA410F80938E2B555CFD4E1',
  b: '0x8DF53034AA413B8B842EFFA0A8C6EC2C2A6C3D148D19E',
  r: '0xA20E71339841D01593D51507D2CC0EFD65AE9D66CBFB89792718A67F',
}, {
  a: '-0x22F3880C366230230A58421166A968342FEDED47BE04B692916',
  b: '0x6111CF07AAD31CED3BCB19447F0BDBD0A7A609B5D6ACA325489',
  r: '0x3E1E46FB7470ECCA3172D7331862739C77B81C6E18A7EC92B73',
}, {
  a: '-0x8756124F3577623DCB9BA81F606D2356B3D',
  b: '-0x67D1337CEB0B1A52BDE573F5FE0BF607496ED4C4082',
  r: '-0x67D1337D72612CA1F35CD633C9A79E26A9DBF81ABBF',
}, {
  a: '0x197B84FF3E7CA301982912D620A9723F6FB65B9FA10C7370B9A',
  b: '-0x4A89604236E89B345EF5DD239270EC28DC055F0C69394',
  r: '0x197B84B4B51C60CAAF8DDE772ACC4EACFECA32C39BAD6707806',
}, {
  a: '-0x2FA831A7ACD817E5F0DE12686F040BFCDD2B650C12DDFD1A774DA25960B2A566E6F13',
  b: '-0xB8458D501ABD0CB5E19749DA12A1ADC58B02AB70',
  r: '-0x2FA831A7ACD817E5F0DE12686F041781360066B7E3A95B33EBEB43837B8EFE1711A83',
}, {
  a: '0xCD2F6360C1A0378093E1F02EAD2EDA3052F41EC364EDCFC3B44A759C7EDCA755A5B',
  b: '-0xD351CA3CE45A4B28390DDE5221C185EF37F689F1BBD2989CB416DDF0C',
  r: '0xCD2F6360C0CCE5B656FD95E384F5CC5200D25D3D75B5D939C28EA303E2289077B4F',
}, {
  a: '0xA126A860E3D038679C3DB76C909C5C93D1DC14D317E54602F068DB259AC25425C97CE7',
  b: '-0xD28D167B9E6B56F304EE4E957C4A54FBB5193BE9EA2EB56F430B5C728B',
  r: '0xA126A860E3CF65DA85C2190139A957A583469888C2E990E9B47EF0F6E553111A6D0A5C',
}, {
  a: '-0xF6580B89F62FF656CAC6E63D40D8A514F37C5B9F2516',
  b: '0xDF92D24E4DF1AFA36C510045A9275040AC625B36E5',
  r: '-0xF57878B7A7E204A7275A953CFB2F7DC4B2CFF943EE31',
}, {
  a: '0xA40A96B1F5BFDD92C31B46F8B19F22727B0C6ECC3D5',
  b: '-0x7B499D636594B0EBD356B95BABBBE925F2E5293B5FB713BCDB89B1446C8D',
  r: '-0x7B499D636594B0EBC9160FF08C5FEB4CC6B374CBD49D2195B3D8EA57A8B8',
}, {
  a: '0x97DBF48F0A67254ACAA79B62700E6F48FD0ED21',
  b: '0x4EF377045DE6326EED77409EED8DC0A0DCEE5C878EB091DCB0575318',
  r: '0x4EF377045DE6326EF6F4FFE7DE3432F58998D63DB5B178D140284039',
}, {
  a: '0x2A50C3169343077966E0B6A627D0B827AE55B438966E4519D776',
  b: '0x2E29C6CEC6C42AB76D9967BD82C17068D9F077CE3068',
  r: '0x2A50C316C16CCE482DA4E15D956A1FE5311724A1705EBCE807DE',
}, {
  a: '0xA0F19E7BC3D3E8033436BB4E99E53EB42DA8502F7DD37',
  b: '-0x933801A109C390B7DA3A322C07773E10AA0FA17DB3F30E8829',
  r: '-0x9337F791EFDBD47A9BB9FEE89BC2547256245EA32EF016AAF2',
}, {
  a: '0xAE6DE5DC624D6008D39743AE9BCAFCA6B2EBAF579003B98E0A480A',
  b: '-0x898EA65D9F7E8AB1F0A9BB5AFA0727F7E6484B661CD5F7FFCF7FFC3799AB',
  r: '-0x898EA5AF3198AE4FA349B28762C3795C1B4BA4B33126A06FCBC66E2D51A1',
}, {
  a: '-0x11EABA72282557514334FAADCF7461915272E36DAC6EA0011E5C423630405C3',
  b: '0x1AF6EB94CF4170698E745221F377DC4DBC8CCA34DD3FA85E69148B4',
  r: '-0x11EABA720D2E6BBC73F38A4441000F6F5EFB071FEFE1D5CC411C99D7C72BD0F',
}, {
  a: '-0xEF0E2E2F88F123483F5BEB50E6553F603EE9B',
  b: '-0x694795FC8ED8B7C912B4E80370BD3E9BDFD14F533A05994E1BCE137D',
  r: '-0x694795FC8ED8B7C912C3D8E653B5CDAE14554511EF13FEA211D20218',
}, {
  a: '0x64381EC484FF0F776B4BC3CD687AF484960A5FC4ABF7D8E75101616B4C6E1746474199',
  b: '-0xFD5E8BB5CD0D42B462F6D99B4E3A63B128107A9E311886257A209998CE38',
  r: '0x64381EC48401B0EBB57EB68AB417FDAAFABC2560FACFC86CB2D048E526F3F6ACAE7361',
}, {
  a: '-0xE125C46F0754E15D29D1660FAED1C09F8B33296FE47FF1B18BF8262FA7',
  b: '-0x712D733883926333A6BE289B35FF92BCB58DA614051B1BB846DD577296A8',
  r: '-0x720E98FCF299B81503E7FA0145AE647D5518D93D74FF9BA9F8694F98C64F',
}, {
  a: '-0x1F468900363881D5EFF8C9A73CCAE441BD56',
  b: '0x60F41F3FA22982585360DD9DC4D1C1BFB976D5FB9599F92DFD3CD494EC7C8C',
  r: '0x60F41F3FA22982585360DD9DC4B27B36B9409D79BFAA0064560009B0AABF36',
}, {
  a: '-0x4839BDE8A684ECB47305F873119D014D0E79B26AEBFEB7B3F08645BAD',
  b: '0xC533ECFDD67DB3A0C9313873A2151E0D3D55E1DBAB27811EFF14B2610825C6B153',
  r: '0xC533ECFDD1FA17C23EC8E9A85AE4BE860C3C11C6DA3FE5F85054C6E5C91D6255A6',
}];

const dataSmall = [{
  a: '-0xFE77BF205',
  b: '0x28B3BE836',
  r: '-0xD5C4009CF',
}, {
  a: '-0xC1',
  b: '0x968A6C9F191C',
  r: '0x968A6C9F185B',
}, {
  a: '0x89EF788',
  b: '0x7A665897C737F',
  r: '0x7A665921B6B07',
}, {
  a: '-0x9CFB270',
  b: '0x73D47212D2AE3EA',
  r: '0x73D4721235B317A',
}, {
  a: '-0x7D',
  b: '0x5FB84B',
  r: '0x5FB7CE',
}, {
  a: '0x59A45F54',
  b: '0x1E7E4F4',
  r: '0x5B8C4448',
}, {
  a: '0xC25FEABC60A2323',
  b: '0x0',
  r: '0xC25FEABC60A2323',
}, {
  a: '0xB961E2A8C9',
  b: '-0x4568392A',
  r: '0xB91C7A6F9F',
}, {
  a: '-0x453F473520',
  b: '-0x2C9',
  r: '-0x453F4737E9',
}, {
  a: '0xB54F',
  b: '0x7F207ECACB122F86',
  r: '0x7F207ECACB12E4D5',
}, {
  a: '0xB43C',
  b: '0x3A25352283EB594',
  r: '0x3A25352283F69D0',
}, {
  a: '0x1E2B13617D7E5',
  b: '-0xE9505946CE18A4',
  r: '-0xE76DA810B640BF',
}, {
  a: '0x1B270EE1E4',
  b: '-0xC940DE3E0645CB1',
  r: '-0xC940DC8B9557ACD',
}, {
  a: '-0x9A',
  b: '-0x43DB',
  r: '-0x4475',
}, {
  a: '-0x4954',
  b: '-0x725EBB2E72FF',
  r: '-0x725EBB2EBC53',
}, {
  a: '-0x8',
  b: '-0x9D3EF565AF14B',
  r: '-0x9D3EF565AF153',
}, {
  a: '-0x589AE00D25438',
  b: '-0xED656A75',
  r: '-0x589AEEE37BEAD',
}, {
  a: '0xACB86A85358BB66',
  b: '-0x5D34B78A5B655',
  r: '0xAC5B35CDAB30511',
}, {
  a: '-0x87E8CE8AF8',
  b: '0x12DC829AD',
  r: '-0x86BB06614B',
}, {
  a: '0x6684C7AFCB3',
  b: '-0xBA6217728505603',
  r: '-0xBA61B0EDBD55950',
}, {
  a: '-0x7590C25A65EC2E60',
  b: '0x92',
  r: '-0x7590C25A65EC2DCE',
}, {
  a: '-0x1987',
  b: '0x98DFBE03',
  r: '0x98DFA47C',
}, {
  a: '-0xB228668FAB77D',
  b: '-0xA45F7',
  r: '-0xB22866904FD74',
}, {
  a: '0x49B4066B3DAF',
  b: '0x34E54D6',
  r: '0x49B409B99285',
}, {
  a: '0x86B05FFA125',
  b: '0x75617B9DBD246',
  r: '0x75E82BFDB736B',
}, {
  a: '0x67A830AD',
  b: '-0xA2A2E9C',
  r: '0x5D7E0211',
}, {
  a: '0x5DBF9D61B111F',
  b: '-0xDE4A50C47FAA10B1',
  r: '-0xDE4474CAA98EFF92',
}, {
  a: '0x0',
  b: '0x0',
  r: '0x0',
}, {
  a: '0x0',
  b: '0x2882858822',
  r: '0x2882858822',
}, {
  a: '-0x45',
  b: '0xFD3439',
  r: '0xFD33F4',
}, {
  a: '-0xB4E22DBC8DF5E5',
  b: '-0xA0A35942',
  r: '-0xB4E22E5D314F27',
}, {
  a: '-0x239FA',
  b: '0x6D255617',
  r: '0x6D231C1D',
}, {
  a: '0xE2',
  b: '0xEDCD62B6C',
  r: '0xEDCD62C4E',
}, {
  a: '0x6D17A',
  b: '0x6AA999AF8B826877',
  r: '0x6AA999AF8B8939F1',
}, {
  a: '-0xC6112',
  b: '-0x6E',
  r: '-0xC6180',
}, {
  a: '-0xC26F0D77C231BEE4',
  b: '0x908D7E',
  r: '-0xC26F0D77C1A13166',
}, {
  a: '0x96DBCDECE9E770',
  b: '0x9DCA9',
  r: '0x96DBCDECF3C419',
}, {
  a: '0x0',
  b: '-0x55',
  r: '-0x55',
}, {
  a: '0x5A',
  b: '0x9A48615AD14B67A3',
  r: '0x9A48615AD14B67FD',
}, {
  a: '0x9E5F4A67D556430',
  b: '0x10',
  r: '0x9E5F4A67D556440',
}, {
  a: '-0x9',
  b: '0xF4D526741FF31E',
  r: '0xF4D526741FF315',
}, {
  a: '-0xC881C4E9187',
  b: '0x176382485B321920',
  r: '0x176375C03EE38799',
}, {
  a: '0x88F8DD66A5785FA',
  b: '0x1B6C191FEDDE',
  r: '0x88FA942837773D8',
}, {
  a: '-0xE792281E8',
  b: '-0xE83B5581CC671B',
  r: '-0xE83B63FAEEE903',
}, {
  a: '0xD16C',
  b: '0xFE2E8D5E5EE1587',
  r: '0xFE2E8D5E5EEE6F3',
}, {
  a: '-0xA9ADA95799F6C',
  b: '0x32',
  r: '-0xA9ADA95799F3A',
}, {
  a: '0x37044879AC',
  b: '-0xE54172B',
  r: '0x36F5F46281',
}, {
  a: '0x3D',
  b: '0xC9FC6',
  r: '0xCA003',
}, {
  a: '0xF0C9ED0313A',
  b: '-0x5DF88',
  r: '0xF0C9ECA51B2',
}, {
  a: '-0x6',
  b: '-0x680F42D',
  r: '-0x680F433',
}, {
  a: '-0xE2ACFB699CABBA9B',
  b: '0xE31953A6AB0',
  r: '-0xE2ACED3807714FEB',
}, {
  a: '0x0',
  b: '0x1578BE7',
  r: '0x1578BE7',
}, {
  a: '-0x767C142559A64A5',
  b: '-0x4092F7F41376',
  r: '-0x76801D54D8E781B',
}, {
  a: '0xBA345',
  b: '-0xF586A51',
  r: '-0xF4CC70C',
}, {
  a: '0x0',
  b: '0xE8D48AA',
  r: '0xE8D48AA',
}, {
  a: '0x269CF2',
  b: '0x775',
  r: '0x26A467',
}, {
  a: '0x9727E423B',
  b: '-0xF2E113E3',
  r: '0x87F9D2E58',
}, {
  a: '0x37051',
  b: '0xF7B87782',
  r: '0xF7BBE7D3',
}, {
  a: '-0xFA5A789395F46',
  b: '-0x73575',
  r: '-0xFA5A7894094BB',
}, {
  a: '0x1CD707C348BD8158',
  b: '0x0',
  r: '0x1CD707C348BD8158',
}, {
  a: '-0x4F58BB6',
  b: '-0x456A4',
  r: '-0x4F9E25A',
}, {
  a: '-0x7010B98CC1',
  b: '-0x531',
  r: '-0x7010B991F2',
}, {
  a: '-0x5A66D35C32',
  b: '0xFE90',
  r: '-0x5A66D25DA2',
}, {
  a: '-0x77',
  b: '0x68441928',
  r: '0x684418B1',
}, {
  a: '0xAB04A15B5',
  b: '-0xB093AE126',
  r: '-0x58F0CB71',
}, {
  a: '-0xF58094FB6D21D2',
  b: '0x647914BA7E',
  r: '-0xF5803082586754',
}, {
  a: '0xE876',
  b: '0x38F0C',
  r: '0x47782',
}, {
  a: '0x0',
  b: '-0xE72C6E51D8806',
  r: '-0xE72C6E51D8806',
}, {
  a: '-0x4B443CDC',
  b: '0x0',
  r: '-0x4B443CDC',
}, {
  a: '-0x2628E',
  b: '-0xDF00',
  r: '-0x3418E',
}, {
  a: '-0xA',
  b: '0x9114',
  r: '0x910A',
}, {
  a: '-0x20B76',
  b: '-0x49DB560E27AF8',
  r: '-0x49DB560E4866E',
}, {
  a: '-0xF7',
  b: '0x7B565BACE4D95C91',
  r: '0x7B565BACE4D95B9A',
}, {
  a: '0x31A12A1',
  b: '0xC3DF55',
  r: '0x3DDF1F6',
}, {
  a: '-0x793BDF20D053',
  b: '0x2B9',
  r: '-0x793BDF20CD9A',
}, {
  a: '0x20F391ABDF20A7',
  b: '0xE7D5EC48F0375D',
  r: '0x108C97DF4CF5804',
}, {
  a: '-0xC65D4CF',
  b: '0x99F9CC1383',
  r: '0x99ED663EB4',
}, {
  a: '0x8AF9E7F4CE',
  b: '0x453E6F7',
  r: '0x8AFE3BDBC5',
}, {
  a: '-0x21924B1DA0FA567',
  b: '-0xE41',
  r: '-0x21924B1DA0FB3A8',
}, {
  a: '0x0',
  b: '-0x449702B6374D',
  r: '-0x449702B6374D',
}, {
  a: '-0x5F72E',
  b: '0x36',
  r: '-0x5F6F8',
}, {
  a: '0xF58E542EEE5F1D5C',
  b: '0xE63D',
  r: '0xF58E542EEE600399',
}, {
  a: '-0xB27344CC26876',
  b: '0x513C83A5ACA',
  r: '-0xB222084880DAC',
}, {
  a: '0xCB87023346BAC',
  b: '0x91AD71',
  r: '0xCB87023C6191D',
}, {
  a: '-0xC09FC60',
  b: '-0xF85',
  r: '-0xC0A0BE5',
}, {
  a: '-0x10',
  b: '0xD9BBE0FE3',
  r: '0xD9BBE0FD3',
}, {
  a: '-0xFD0556E55',
  b: '-0xB799D00ED',
  r: '-0x1B49F26F42',
}, {
  a: '0xB60C6',
  b: '0x42EA856DD36BB9AF',
  r: '0x42EA856DD3771A75',
}, {
  a: '-0x3494',
  b: '-0x390CD7432737612C',
  r: '-0x390CD743273795C0',
}, {
  a: '0xB94071E42B',
  b: '-0x3710',
  r: '0xB94071AD1B',
}, {
  a: '0x0',
  b: '-0x8BB2039BF4247',
  r: '-0x8BB2039BF4247',
}, {
  a: '-0x3F0',
  b: '-0x75B41392F916A8D',
  r: '-0x75B41392F916E7D',
}, {
  a: '-0x6BF952AB81A8D958',
  b: '0x9C0B3D6',
  r: '-0x6BF952AB77E82582',
}, {
  a: '0x0',
  b: '0x0',
  r: '0x0',
}, {
  a: '0x53D802',
  b: '0x1BC72770962',
  r: '0x1BC72CAE164',
}, {
  a: '-0x37DFC8B',
  b: '0x13F8FB',
  r: '-0x36A0390',
}, {
  a: '0xD',
  b: '0x48B3CCB7E5E7B',
  r: '0x48B3CCB7E5E88',
}, {
  a: '0xA468',
  b: '0x405CD0',
  r: '0x410138',
}, {
  a: '0x13A7D98D',
  b: '0xAD7A446D51F2',
  r: '0xAD7A58152B7F',
}, {
  a: '0x7BCA',
  b: '0xD3A4861592D65',
  r: '0xD3A486159A92F',
}];

import JSBI from '../dist/jsbi.mjs';
const JSBigInt = JSBI.BigInt;

let errorCount = 0;

const dataBigNative = [];
const dataBigJsbi = [];
const dataSmallNative = [];
const dataSmallJsbi = [];

function hexParseN(s) {
  if (s.charCodeAt(0) === 0x2D) return -BigInt(s.slice(1));
  return BigInt(s);
}
function parseNative(d) {
  if (d.b) {
    return {a: hexParseN(d.a), b: hexParseN(d.b), r: hexParseN(d.r)};
  }
  return {a: hexParseN(d.a), r: hexParseN(d.r)};
}
function hexParse(s) {
  if (s.charCodeAt(0) === 0x2D) {
    const result = JSBigInt(s.slice(1));
    result.sign = true;
    return result;
  }
  return JSBigInt(s);
}
function parseJSBI(d) {
  if (d.b) {
    return {a: hexParse(d.a), b: hexParse(d.b), r: hexParse(d.r)};
  }
  return {a: hexParse(d.a), r: hexParse(d.r)};
}
function prepareData(src, dstNative, dstJsbi) {
  for (let i = 0; i < src.length; i++) {
    const d = src[i];
    dstNative.push(parseNative(d));
    dstJsbi.push(parseJSBI(d));
  }
}
prepareData(dataBig, dataBigNative, dataBigJsbi);
prepareData(dataSmall, dataSmallNative, dataSmallJsbi);


function testNative(data, reps) {
  for (let i = 0; i < data.length; i++) {
    const d = data[i];
    const r = d.a + d.b;
    if (d.r !== r) {
      console.log('Input A:  ' + d.a.toString(16));
      console.log('Input B:  ' + d.b.toString(16));
      console.log('Result:   ' + r.toString(16));
      console.log('Expected: ' + d.r.toString(16));
      console.log('Op: +');
      errorCount++;
    }
  }
  let r;
  const t1 = Date.now();
  for (let j = 0; j < reps; j++) {
    for (let i = 0; i < data.length; i++) {
      const d = data[i];
      r = d.a + d.b;
    }
  }
  // Confuse the compiler into thinking that the loop is needed :-)
  const d = data[data.length - 1];
  if (d.r !== r) throw new Error('no dead code elimination please');
  return Date.now() - t1;
}


function testJsbi(data, reps) {
  for (let i = 0; i < data.length; i++) {
    const d = data[i];
    const r = JSBI.add(d.a, d.b);
    if (!JSBI.equal(r, d.r)) {
      console.log('Input A:  ' + d.a.toString(16));
      console.log('Input B:  ' + d.b.toString(16));
      console.log('Result:   ' + r.toString(16));
      console.log('Expected: ' + d.r.toString(16));
      console.log('Op: add');
      errorCount++;
    }
  }
  let r;
  const t1 = Date.now();
  for (let j = 0; j < reps; j++) {
    for (let i = 0; i < data.length; i++) {
      const d = data[i];
      r = JSBI.add(d.a, d.b);
    }
  }
  // Confuse the compiler into thinking that the loop is needed :-)
  const d = data[data.length - 1];
  if (!JSBI.equal(r, d.r)) throw new Error('no dead code elimination please');
  return Date.now() - t1;
}


const kRepsBig = 40000;
const kRepsSmall = 120000;

console.log('Testing add:');
console.log('Native/big:   ' + testNative(dataBigNative, kRepsBig));
console.log('JSBI/big:     ' + testJsbi(dataBigJsbi, kRepsBig));
console.log('Native/small: ' + testNative(dataSmallNative, kRepsSmall));
console.log('JSBI/small:   ' + testJsbi(dataSmallJsbi, kRepsSmall));

if (errorCount !== 0) {
  console.error('Finished with ' + errorCount + ' errors.');
  // Support both d8 (`quit`) and Node.js (`process.exit`).
  (typeof quit !== 'undefined' ? quit : process.exit)(1);
}
